package com.zjmy.controller;

import com.alibaba.fastjson.JSON;
import com.zjmy.model.User;
import com.zjmy.service.TestService;
import com.zjmy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;


@Controller
@RequestMapping("/api/user")
public class UserController {
    @Autowired
    UserService userService;
    @Autowired
    TestService testService;

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    @ResponseBody
    public String add() {
//        try {
//            Thread.sleep(30000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
        User user = new User();
        user.setName("22222");
        user.setId("343434");
        user.setYears(23);

        user=userService.getUser(user);
        List<User> userList = userService.getUsers(user);

//         String s2 = userService.testStr("22222");
//         if(!s2.equals("22222")){
//             System.out.println("有问题"+s2);
//         }
//
//
//        Date date = new Date();
//        for (int i = 0; i < 2500; i++) {
//            String s ="";
//            try {
//                user.setYears(100+i);
//                user=userService.getUser(user);
//
//                user=userService.getUser("111111",user);
////                if(!s.equals("22222")){
////                    System.out.println("有问题"+s);
////                }
//            } catch (Exception e) {
//                System.out.println(s);
//                e.printStackTrace();
//            }
//        }
//        System.out.println("---单线程跑2500个请求 消耗时间 is "+(new Date().getTime() - date.getTime()));
//        date = new Date();
//        ExecutorService pool = Executors.newFixedThreadPool(10);
//        List<FutureTask> futureTaskList = new ArrayList<>();
//        for (int j = 0; j < 30; j++) {
//            futureTaskList.add((FutureTask) pool.submit(() -> {
//                        for (int i = 0; i < 5000; i++) {
//                            String s ="";
//                            try {
//                                s=userService.testStr("222244");
////                                if(!s.equals("222244")){
////                                    System.out.println("有问题"+s);
////                                }
//                            } catch (Exception e) {
//                                System.out.println(s);
//                                e.printStackTrace();
//                            }
//                        }
//                    }
//            ));
//        }
//        futureTaskList.forEach(s -> {
//            try {
//                s.get();
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            } catch (ExecutionException e) {
//                e.printStackTrace();
//            }
//        });
//        System.out.println("多线程并发15W 时间"+(new Date().getTime() - date.getTime()));



        return "22222";
    }

    @RequestMapping(value = "/test2", method = RequestMethod.GET)
    @ResponseBody
    public String test2() {
        User user2 = userService.testStr2();
        String s2 = userService.testStr("22222");

//        User user = new User();
//        user.setName("33333");
//        user.setId("343434");
//        JSON.toJSONString(userService.test(user));
//        Date date = new Date();
//        for (int i = 0; i < 5000; i++) {
//            String s ="";
//            try {
//                s=JSON.toJSONString(userService.test(user));
//            } catch (Exception e) {
//                System.out.println(s);
//                e.printStackTrace();
//            }
//        }
//        System.out.println(new Date().getTime() - date.getTime());
//        date = new Date();
//        ExecutorService pool = Executors.newFixedThreadPool(10);
//        List<FutureTask> futureTaskList = new ArrayList<>();
//        for (int j = 0; j < 20; j++) {
//            futureTaskList.add((FutureTask) pool.submit(() -> {
//                for (int i = 0; i < 2500; i++) {
//                    String s ="";
//                    try {
//                         s=JSON.toJSONString(userService.test(user));
//                    } catch (Exception e) {
//                        System.out.println(s);
//                        e.printStackTrace();
//                    }
//                }
//            }
//            ));
//        }
//        futureTaskList.forEach(s -> {
//            try {
//                s.get();
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            } catch (ExecutionException e) {
//                e.printStackTrace();
//            }
//        });
//
//
//        System.out.println(new Date().getTime() - date.getTime());
        return s2;
    }
}
